package org.myspringframework.beans.factory;

import org.myspringframework.beans.BeansException;

import java.util.Map;

/**
 *
 *  用于支持能够列出所有Bean的功能。
 *
 * BeanFactory接口的扩展，由可以枚举所有bean实例的bean工厂实现，而不是像客户端请求的那样逐个按名称进行bean查找。
 * 预加载所有beanDefinition(如基于xml的工厂)的BeanFactory实现可以实现这个接口。
 */
public interface ListableBeanFactory extends BeanFactory{

    /**
     * 按照类型返回 Bean 实例
     */
    <T> Map<String, T> getBeansOfType(Class<T> type) throws BeansException;

    /**
     * 返回BeanDefinition中所有的Bean名称
     */
    String[] getBeanDefinitionNames();

}